//class Solution {
//public:
//    void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) {
//       int cur1 = 0, cur2 = 0, i = 0;
//       vector<int> a(m + n);
//       while (cur1 < m && cur2 < n)
//       {
//            if (nums1[cur1] >= nums2[cur2]) a[i++] = nums2[cur2++];
//            else a[i++] = nums1[cur1++];
//       }
//       while (cur1 < m) a[i++] = nums1[cur1++];
//       while (cur2 < n) a[i++] = nums2[cur2++];
//
//       for (int j = 0; j < m + n; j++) nums1[j] = a[j];
//    }
//};



//class Solution {
//public:
//    void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) {
//    int cur = m + n - 1, cur1 = m - 1, cur2 = n - 1;
//    while (cur1 >= 0 && cur2 >= 0)
//    {
//        if (nums1[cur1] >= nums2[cur2]) nums1[cur--] = nums1[cur1--];
//        else nums1[cur--] = nums2[cur2--];
//    }
//    while (cur2 >= 0) nums1[cur--] = nums2[cur2--];
//    }
//};



//#include <iostream>
//#include <vector>
//using namespace std;
//
//const int N = 30;
//vector<int> nums[N];
//int n;
//
//pair<int, int> find(int x)
//{
//	for (int i = 0; i < n; i++)
//	{
//		for (int j = 0; j < nums[i].size(); j++)
//		{
//			if (nums[i][j] == x) 
//				return {i, j};
//		}
//	}
//}
//
//void clean(int x, int y)
//{
//	for (int i = y + 1; i < nums[x].size(); i++)
//	{
//		int tmp = nums[x][i];
//		nums[tmp].push_back(tmp);
//	}
//	nums[x].resize(y + 1);
//}
//
//void move(int x_a, int y_a, int x_b)
//{
//	for (int i = y_a; i < nums[x_a].size(); i++)
//	{
//		nums[x_b].push_back(nums[x_a][i]);
//	}
//	nums[x_a].resize(y_a);
//}
//
//int main()
//{
//	cin >> n;
//	
//	for (int i = 0; i < n; i++)
//	{
//		nums[i].push_back(i);
//	}
//	
//	string op1, op2;
//	int a, b;
//	while (cin >> op1 >> a >> op2 >> b)
//	{	
//		pair<int, int> pa = find(a);
//		int x_a = pa.first, y_a = pa.second;
//		pair<int, int> pb = find(b);
//		int x_b = pb.first, y_b = pb.second;
//		
//		if (x_a == x_b) continue;
//		
//		if (op1 == "quit" || op2 == "quit") return 0;
//		
//		if (op1 == "move") clean(x_a, y_a);
//		if (op2 == "onto") clean(x_b, y_b);
//		
//		move(x_a, y_a, x_b);
//	}
//	
//	for (int i = 0; i < n; i++)
//	{
//		cout << i << ":";
//		for (int j = 0; j < nums[i].size(); j++)
//		{
//			cout << " " << nums[i][j];
//		}
//		cout << endl;
//	}
//	
//	return 0;
//}
